package com.shop2cn.iapi.agentproducts.testcase;

import java.util.Arrays;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;

import com.shop2cn.iapi.agentproducts.parameter.AddAgentProductBean;
import com.shop2cn.iapi.agentproducts.parameter.GetProductBySkuBean;
import com.shop2cn.iapi.agentproducts.parameter.ImportAgentProductBean;
import com.shop2cn.iapi.agentproducts.parameter.ModifyAgentProductBean;
import com.shop2cn.iapi.agentproducts.service.GetProductBySkuCall;
import com.ymt.core.tool.Logger;
import com.ymt.utils.annotation.TestCase;
import com.ymt.utils.annotation.TestSuite;
import com.ymt.utils.tag.P1;
import com.ymt.utils.tag.P2;
import com.ymttest.business.service.AddAgentProductCallService;
import com.ymttest.utils.AgentUsers;
/**
*通过SKU查询商品信息(代下单)
*FreeMaker Template自动生成代码
*/
@TestSuite
public class Ts_GetProductBySku{
	private static GetProductBySkuBean getproductbyskucodeBean;
	private static GetProductBySkuCall getproductbyskucodeCall;
	@BeforeClass
	public static void setUp() {
		Logger.createResultFile("通过SKU查询商品信息(代下单)");
	}

	@Before
	public void caseUp() {
		getproductbyskucodeBean=new GetProductBySkuBean();
		getproductbyskucodeCall=new GetProductBySkuCall();
	}

	@AfterClass
	public static void tearDown() {
		Logger.generateResult(getproductbyskucodeCall.getOpurl());
	}

	@After
	public void caseDown() {
		Logger.end();
	}
	
	public static int userid=500152686;
	//vip渠道
		private static int vipRootUserId = AgentUsers.vipRootUserId;
		private static String vipRootUserName = "NickautoTest";
		private static int csId = AgentUsers.csId;
		//vip渠道->代理
		private static int vipAgentUserId1 = AgentUsers.vipAgentUserId1;
		private static String vipAgentUserName1 = "dgsq408897016";
		private static int csId1 = AgentUsers.csId1;
		//vip渠道->代理->代理
		private static int vipAgentUserId2 = AgentUsers.vipAgentUserId2;
		private static String vipAgentUserName2 = "NickautoTest";
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_GetProductBySkuCode_001() {
		Logger.start(true,"商户编号与sku列表正确,成功");
		try {
			getproductbyskucodeBean.setUserId(vipRootUserId);
			getproductbyskucodeBean.setSkuList(Arrays.asList("777777","777777"));
			getproductbyskucodeCall.setData(getproductbyskucodeBean);
			getproductbyskucodeCall.callService();		
			Logger.verifyEquals("200", getproductbyskucodeCall.getString("code"), "验证正确");		
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_GetProductBySkuCode_011() {
		Logger.start(true,"代理根据sku进行查询");
		try {
			//渠道商新建商品
			AddAgentProductBean addAgentProductBean = AddAgentProductCallService.initAddAgentProduct(vipRootUserId,vipRootUserName,true);
			String rootsku1=addAgentProductBean.getCatalogList().get(0).getSku();
			String rootsku2=addAgentProductBean.getCatalogList().get(1).getSku();
			String productId = AddAgentProductCallService.AddAgentProduct(addAgentProductBean);

			//vip1代理渠道商
			ImportAgentProductBean importAgentProductBean = AddAgentProductCallService.initImportAgentProduct(vipAgentUserId1, vipAgentUserName1, productId, vipRootUserId, true);
			String agentProductId = AddAgentProductCallService.ImportAgentProduct(importAgentProductBean);
			//VIP2代理vip1
			ImportAgentProductBean importAgentProductBean1 = AddAgentProductCallService.initImportAgentProduct(vipAgentUserId2, vipAgentUserName2, agentProductId, vipAgentUserId1, false);
			String agentProductId1 = AddAgentProductCallService.ImportAgentProduct(importAgentProductBean1);
			
			
			getproductbyskucodeBean.setUserId(vipAgentUserId2);
			getproductbyskucodeBean.setSkuList(Arrays.asList(rootsku1,rootsku2));
			getproductbyskucodeCall.setData(getproductbyskucodeBean);
			getproductbyskucodeCall.callService();		
			Logger.verifyEquals("200", getproductbyskucodeCall.getString("code"), "验证正确");		
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_GetProductBySkuCode_012() {
		Logger.start(true,"sku被修改，然后代理进行查询，成功");
		try {
			//渠道商新建商品
			AddAgentProductBean addAgentProductBean = AddAgentProductCallService.initAddAgentProduct(vipRootUserId,vipRootUserName,true);
			String rootsku1=addAgentProductBean.getCatalogList().get(0).getSku();
			String rootsku2=addAgentProductBean.getCatalogList().get(1).getSku();
			String productId = AddAgentProductCallService.AddAgentProduct(addAgentProductBean);

			//vip1代理渠道商
			ImportAgentProductBean importAgentProductBean = AddAgentProductCallService.initImportAgentProduct(vipAgentUserId1, vipAgentUserName1, productId, vipRootUserId, true);
			String agentProductId = AddAgentProductCallService.ImportAgentProduct(importAgentProductBean);
			//VIP2代理vip1
			ImportAgentProductBean importAgentProductBean1 = AddAgentProductCallService.initImportAgentProduct(vipAgentUserId2, vipAgentUserName2, agentProductId, vipAgentUserId1, false);
			String agentProductId1 = AddAgentProductCallService.ImportAgentProduct(importAgentProductBean1);
			
			ModifyAgentProductBean mpb=AddAgentProductCallService.initModifyAgentProductBean(productId, addAgentProductBean);
			mpb.getCatalogList().get(0).setSku("666666");
			mpb.getCatalogList().get(1).setSku("666666");
			AddAgentProductCallService.modifyAgentProduct(mpb);
			
			//修改前的sku，失败
			getproductbyskucodeBean.setUserId(vipAgentUserId1);
			getproductbyskucodeBean.setSkuList(Arrays.asList(rootsku1,rootsku2));
			getproductbyskucodeCall.setData(getproductbyskucodeBean);
			getproductbyskucodeCall.callService();		
			Logger.verifyEquals("200", getproductbyskucodeCall.getString("code"), "验证正确");
			Logger.verifyEquals(true,getproductbyskucodeCall.getJsonObject().get("data").getAsJsonObject().get("productList").isJsonNull(),"没有获取到");
			
			//新的sku，成功
			getproductbyskucodeBean.setUserId(vipAgentUserId1);
			getproductbyskucodeBean.setSkuList(Arrays.asList("666666","666666"));
			getproductbyskucodeCall.setData(getproductbyskucodeBean);
			getproductbyskucodeCall.callService();		
			Logger.verifyEquals("200", getproductbyskucodeCall.getString("code"), "验证正确");
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	@Test
	@Category({P2.class})
	@TestCase
	public void Tc_GetProductBySkuCode_002() {
		Logger.start(true,"商户编号错误,失败");
		try {
			getproductbyskucodeBean.setUserId(777);
			getproductbyskucodeBean.setSkuList(Arrays.asList("1","2"));
			getproductbyskucodeCall.setData(getproductbyskucodeBean);
			getproductbyskucodeCall.callService();		
			Logger.verifyEquals("201", getproductbyskucodeCall.getString("code"), "验证返回code");
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	@Test
	@Category({P2.class})
	@TestCase
	public void Tc_GetProductBySkuCode_021() {
		Logger.start(true,"sku错误,失败");
		try {
			getproductbyskucodeBean.setUserId(userid);
			getproductbyskucodeBean.setSkuList(Arrays.asList("1","2"));
			getproductbyskucodeCall.setData(getproductbyskucodeBean);
			getproductbyskucodeCall.callService();		
			Logger.verifyEquals("200", getproductbyskucodeCall.getString("code"), "验证返回code");
			Logger.verifyEquals(true,getproductbyskucodeCall.getJsonObject().get("data").getAsJsonObject().get("productList").isJsonNull(),"没有获取到");
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	@Test
	@Category({P2.class})
	@TestCase
	public void Tc_GetProductBySkuCode_022() {
		Logger.start(true,"商户编号与sku错误,失败");
		try {
			getproductbyskucodeBean.setUserId(6666666);
			getproductbyskucodeBean.setSkuList(Arrays.asList("1","2"));
			getproductbyskucodeCall.setData(getproductbyskucodeBean);
			getproductbyskucodeCall.callService();		
			Logger.verifyEquals("201", getproductbyskucodeCall.getString("code"), "验证返回code");
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	@Test
	@Category({P2.class})
	@TestCase
	public void Tc_GetProductBySkuCode_003() {
		Logger.start(true,"商户编号为空,失败");
		try {
			getproductbyskucodeBean.setUserId(null);
			getproductbyskucodeBean.setSkuList(Arrays.asList("1","2"));
			getproductbyskucodeCall.setData(getproductbyskucodeBean);
			getproductbyskucodeCall.callService();		
			Logger.verifyEquals("400", getproductbyskucodeCall.getString("code"), "验证返回code，商户id必传");
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	@Test
	@Category({P2.class})
	@TestCase
	public void Tc_GetProductBySkuCode_004() {
		Logger.start(true,"商户编号与sku列表为空,失败");
		try {
			getproductbyskucodeBean.setUserId(null);
			getproductbyskucodeBean.setSkuList(null);
			getproductbyskucodeCall.setData(getproductbyskucodeBean);
			getproductbyskucodeCall.callService();		
			Logger.verifyEquals("400", getproductbyskucodeCall.getString("code"), "验证返回code，商户id必穿");
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_GetProductBySkuCode_013() {
		Logger.start(true,"根据sku查询，判断商品类型");
		try {
			//渠道商新建商品
			AddAgentProductBean addAgentProductBean = AddAgentProductCallService.initAddAgentProduct(vipRootUserId,vipRootUserName,true);
			String rootsku1=addAgentProductBean.getCatalogList().get(0).getSku();
			String rootsku2=addAgentProductBean.getCatalogList().get(1).getSku();
			String productId = AddAgentProductCallService.AddAgentProduct(addAgentProductBean);

			//vip1代理渠道商
			ImportAgentProductBean importAgentProductBean = AddAgentProductCallService.initImportAgentProduct(vipAgentUserId1, vipAgentUserName1, productId, vipRootUserId, true);
			String agentProductId = AddAgentProductCallService.ImportAgentProduct(importAgentProductBean);
			//VIP2代理vip1
			ImportAgentProductBean importAgentProductBean1 = AddAgentProductCallService.initImportAgentProduct(vipAgentUserId2, vipAgentUserName2, agentProductId, vipAgentUserId1, false);
			String agentProductId1 = AddAgentProductCallService.ImportAgentProduct(importAgentProductBean1);
			
			
			getproductbyskucodeBean.setUserId(vipAgentUserId2);
			getproductbyskucodeBean.setSkuList(Arrays.asList(rootsku1,rootsku2));
			getproductbyskucodeCall.setData(getproductbyskucodeBean);
			getproductbyskucodeCall.callService();		
			Logger.verifyEquals("200", getproductbyskucodeCall.getString("code"), "验证正确");		
			Logger.verifyEquals(2, getproductbyskucodeCall.getJsonObject().getAsJsonObject("data").getAsJsonArray("productList").get(0).getAsJsonObject().get("productType").getAsInt(), "商品为代理商品");
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
		
}